package com.lw.single;

/**
 * @author LW
 * @2020/8/21 23:26
 */

import java.lang.reflect.Constructor;

/**
 * enum  是什么？
 * 本身是一个class类
 */
//枚举单例
public enum EnumSingle {

    INSTANCE;//这样一个对象默认十个单例的。不可能被人拿走了

    public EnumSingle getInstance(){
        return INSTANCE;
    }
    public static void main(String[] args) {
        EnumSingle instance = EnumSingle.INSTANCE;
        EnumSingle instance1 = EnumSingle.INSTANCE;
        System.out.println(instance);
        System.out.println(instance1);
    }

}

class Test{
    //反射无法破坏枚举！！！！
    public static void main(String[] args) throws Exception {
//        java.lang.NoSuchMethodException: com.lw.single.EnumSingle  找不到方法
//        工具欺骗人，代码中并没有   无参构造器
//        换个牛逼的 jad   就发现了  有参的构造器
//        结果返回Cannot reflectively create enum objects反射无法破坏枚举！！！！
        EnumSingle instance = EnumSingle.INSTANCE;
        Constructor<EnumSingle> declaredConstructor = EnumSingle.class.getDeclaredConstructor(null);
        declaredConstructor.setAccessible(true);
        EnumSingle instance1 = declaredConstructor.newInstance();
        System.out.println(instance);
        System.out.println(instance1);
    }
}